package com.fowo.api.model.sales.withdraw;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 销售退货单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SalesWithdrawImportPo {

  /** 退货单号 */
  @ExcelProperty("退货单号")
  private String rmaOrderNo;

  /** 退货类型 */
  @ExcelProperty("退货类型")
  @EnumsString(
    value = { "买家退货", "物流退货" },
    message = "退货类型只能是“买家退货”, “物流退货”中的一个"
  )
  private String salesType;

  /** 退货仓库 */
  @ExcelProperty("退货仓库")
  @Size(max = 50, message = "退货仓库长度不能超过50")
  private String whnameName;

  @ExcelIgnore
  @Schema(title = "退货仓库")
  private String whname;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String storeNameShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String storeName;

  /** 系统单号 */
  @ExcelProperty("系统单号")
  @Size(max = 50, message = "系统单号长度不能超过50")
  private String globalOrderNo;

  /** 退货原因 */
  @ExcelProperty("退货原因")
  @Size(max = 500, message = "退货原因长度不能超过500")
  private String reason;

  /** 订单状态 */
  @ExcelProperty("订单状态")
  @EnumsString(
    value = { "待收货", "已完成", "已作废" },
    message = "订单状态只能是“待收货”, “已完成”, “已作废”中的一个"
  )
  private String status;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String logisticsProviderName;

  /** 跟踪号 */
  @ExcelProperty("跟踪号")
  @Size(max = 50, message = "跟踪号长度不能超过50")
  private String trackingNo;

  /** 预计到货时间 */
  @ExcelProperty("预计到货时间")
  @DateTimeString(message = "预计到货时间不是有效的时间日期格式")
  private String preArrivalTime;

  /** 三方仓预报 */
  @ExcelProperty("三方仓预报")
  @EnumsString(
    value = { "不预报", "预报" },
    message = "三方仓预报只能是“不预报”, “预报”中的一个"
  )
  private String hasPrediction;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 500, message = "备注长度不能超过500")
  private String remark;

  /** 物流类型 */
  @ExcelProperty("物流类型")
  @Size(max = 20, message = "物流类型长度不能超过20")
  private String logisticsType;

  /** 站点 */
  @ExcelProperty("站点")
  @Size(max = 50, message = "站点长度不能超过50")
  private String site;

  /** 平台 */
  @ExcelProperty("平台")
  @Size(max = 50, message = "平台长度不能超过50")
  private String platform;

  /** 店铺编码 */
  @ExcelProperty("店铺编码")
  @Size(max = 50, message = "店铺编码长度不能超过50")
  private String scode;

  /** 仓库编码 */
  @ExcelProperty("仓库编码")
  @Size(max = 50, message = "仓库编码长度不能超过50")
  private String whcode;

  /** 店铺id */
  @ExcelProperty("店铺id")
  @LongString(message = "店铺id数值格式不正确", label = "店铺id")
  private String sid;

  /** 退货仓库id */
  @ExcelProperty("退货仓库id")
  @LongString(message = "退货仓库id数值格式不正确", label = "退货仓库id")
  private String wid;

  /** 售后类型 */
  @ExcelProperty("售后类型")
  @EnumsString(
    value = { "退货退款", "退款", "退货" },
    message = "售后类型只能是“退货退款”, “退款”, “退货”中的一个"
  )
  private String afterSaleType;

  /** 退款方式 */
  @ExcelProperty("退款方式")
  @Size(max = 50, message = "退款方式长度不能超过50")
  private String intervalDays;

  /** 标签 */
  @ExcelProperty("标签")
  @Size(max = 50, message = "标签长度不能超过50")
  private String lable;

  /** 自发货截单 */
  @ExcelProperty("自发货截单")
  @Size(max = 50, message = "自发货截单长度不能超过50")
  private String order;

  /** 仓库名称 */
  @ExcelProperty("仓库名称")
  @Size(max = 50, message = "仓库名称长度不能超过50")
  private String wname;

  /** 店铺名称 */
  @ExcelProperty("店铺名称")
  @Size(max = 50, message = "店铺名称长度不能超过50")
  private String sname;
}
